//
// Created by Snow on 2023/4/9.
//
//图的两种储存结构
#define INF 32767//定义∞
#define MAXV 100//最大顶点个数
typedef char InfoType;
//以下定义领接矩阵类型
typedef struct
{
    int no;//顶点编号
    InfoType info;//顶点其他信息
}VertexType;//顶点类型
typedef struct
{
    int edges[MAXV][MAXV];//领接矩阵数组
    int n,e;//顶点数，边数
    VertexType vexs[MAXV];//存放顶点信息
}MatGraph;//完整的图领接矩阵类型
//以下定义邻接表类型
typedef struct ANode
{
    int adjvex;//该边的邻接点编号
    struct ANode *nextarc;//指向下一条边的指针
    int weight;//该边的相关信息，如权值（用整形表示）
}ArcNode;//边结点类型
typedef struct VNode
{
    InfoType info;//顶点的其他信息
    int count;//存放顶点入度，仅仅用于拓扑排序
    ArcNode *firstarc;//指向第一条边
}VNode;//邻接点头结点类型
typedef struct
{
    VNode adjlist[MAXV];//邻接表头结点数组
    int n,e;//图中顶点数n和边数e
}AdjGraph;//完整的图邻接表类型